// 编写收藏题目路由
const express = require('express')
// const multer = require('multer')
const router = express.Router()
const { v4: uuidv4 } = require('uuid')
// 引入jwt token工具
const JwtUtil = require('../../utils/jwt')
const getCreateTime = require('../../utils/getCreateTime')
// 导入收藏题目数据模块
const topicCollectModel = require('../../model/collectModel/topic')
// 添加收藏题目
// 参数：collect_topic_id,collect_topic_create_time,collect_topic_title,user_id,topic_id
router.post('/add', async (req, res) => {
    // collect_topic_id,collect_topic_create_time,collect_topic_title,user_id,topic_id
    let collect_topic_title = req.body.collect_topic_title
    let topic_id = req.body.topic_id
    // let user_id = req.body.user_id
    let collect_topic_id = uuidv4()
    let token = req.body.token
    let collect_topic_create_time = getCreateTime.now()
    // 请求需要进行token校验 
    let jwt = new JwtUtil(token)
    // 返回一个对象 
    let result = jwt.verifyToken()
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        if (result.data) {
            let user_id = result.data;
            // 调用添加收藏题目方法
            await topicCollectModel.add(collect_topic_id,collect_topic_create_time,collect_topic_title,user_id,topic_id)
                .then(
                    data => {
                        res.send(data)
                    }
                )
                .catch(
                    err => {
                        res.send({ code: 500, msg: '服务器异常...', err })
                    }
                )
        }
    }
})
// 删除收藏题目
router.get('/remove', async (req, res) => {
    let token = req.query.token
    let topic_id = req.query.topic_id
    // 请求需要进行token校验 
    let jwt = new JwtUtil(token)
    // 返回一个对象 
    let result = jwt.verifyToken()
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        // 用户是否在线
        if (result.data) {
            let user_id = result.data
            // 调用删除收藏题目方法（根据收藏题目ID操作）
            await topicCollectModel.remove(user_id,topic_id)
                .then(
                    data => {
                        res.send(data)
                    }
                )
                .catch(
                    err => {
                        res.send({ code: 500, msg: '服务器异常...', err })
                    }
                )
        }
    }
})
// 查询收藏题目
router.get('/list', async (req, res) => {
    // 调用查询收藏题目方法
    await topicCollectModel.list()
        .then(
            data => {
                res.send(data)
            }
        )
        .catch(
            err => {
                res.send({ code: 500, msg: '服务器异常...', err })
            }
        )
})
// 查询收藏题目接口
router.get('/detail', async (req, res) => {
    // 接收前端传递
    let topic_id = req.query.topic_id
    let token = req.query.token;
    // 请求需要进行token校验 
    let jwt = new JwtUtil(token);
    // 返回一个对象 
    let result = jwt.verifyToken();
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录'
        });
    } else {
        if (result.data) {
            let user_id = result.data;
            // 调用获取广告列表的方法
            await topicCollectModel.detail(user_id,topic_id)
                .then(
                    data => {
                        res.send(data)
                    }
                )
                .catch(
                    err => {
                        res.send({ code: 500, msg: '服务器异常...', err })
                    }
                )
        }
    }

})

router.get('/detailxxx', async (req, res) => {
    // 接收前端传递
    let collect_topic_id = req.query.collect_topic_id;
    let token = req.query.token;
    // 请求需要进行token校验 
    let jwt = new JwtUtil(token);
    // 返回一个对象 
    let result = jwt.verifyToken();
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录'
        });
    } else {
        if (result.data) {
            // 调用获取广告列表的方法
            await topicCollectModel.detail(collect_topic_id)
                .then(
                    data => {
                        res.send(data)
                    }
                )
                .catch(
                    err => {
                        res.send({ code: 500, msg: '服务器异常...', err })
                    }
                )
        }
    }

})

// 统计收藏的题目
// 统计今天学习人数
router.get('/total', async (req, res) => {
    let token = req.query.token 
    // 请求需要进行token校验 
    let jwt = new JwtUtil(token)
    // 返回一个对象 
    let result = jwt.verifyToken()
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        if (result.data) {
            let user_id = result.data;
            await topicCollectModel.total(user_id)
            .then(
                data => {
                    res.send(data)
                }
            )
            .catch(
                err => {
                    res.send({ code: 500, msg: '服务器异常...2xx', err })
                }
            )
        }
    }
})

// 查 
// 参数：
router.get('/my_list', async (req, res) => {
    let token = req.query.token
     // 请求需要进行token校验 
     let jwt = new JwtUtil(token)
     // 返回一个对象 
     let result = jwt.verifyToken()
     // 验通过执行下一步，否则就返回登陆信息不正确
     if (result == 'err') {
         res.send({
             code: -1,
             msg: '登录已过期,请重新登录。'
         });
     } else {
         // 用户是否在线
         if (result.data) {
                let user_id = result.data
                // 调用查询评论方法
                await topicCollectModel.my_list(user_id)
                .then(
                    data => {
                        res.send(data)
                    }
                )
                .catch(
                    err => {
                        res.send({ code: 500, msg: '服务器异常...', err })
                    }
                )
         }
     }
    
})

//路由挂在模块系统下
module.exports = router;